package algo.A05_其他排序算法;

import java.util.Arrays;
import java.util.Comparator;

/**
 * 数组能排成的最小数(特殊排序)
 * 题目：输入一个正整数数组，把数组里所有整数拼接起来排成一个数，打印出能拼接出的所有数字中最小的一个。
 * 如输入数组{3,32,321}，则输出这三个数字能排成的最小数字为：321323
 */
public class T05_数组元素能排成的最小数_自定义比较器 {
    public static void main(String[] args) {
        Integer[] arr = {3, 32, 321};
        String result = solution(arr);
        System.out.println("result = " + result);
    }

    private static String solution(Integer[] arr){
        StringBuilder result = new StringBuilder();
        Arrays.sort(arr,new Comparator<Integer>(){
            @Override
            public int compare(Integer o1, Integer o2) {
                String s1 = o1 + "" + o2;
                String s2 = o2 + "" + o1;
                return s1.compareTo(s2);
            }
        });
        for (Integer item : arr) {
            result.append(item);
        }
        return result.toString();
    }
}
